#pragma once
#ifndef __SPORTS_MODE_VTBL_H__
#define __SPORTS_MODE_VTBL_H__

#include <sports_mode.h>
typedef struct __sports_mode_vtbl_t
{
    void (*construct)(void);
    void (*timeout)(void);
    void (*destructor)(void);
} sports_mode_vtbl_t;

inline void sports_mode_call_construct(const sports_mode_vtbl_t *vptr)
{
    if (vptr)
    {
        if (vptr->construct)
        {
            vptr->construct();
        }
    }
}
inline void sports_mode_call_timeout(const sports_mode_vtbl_t *vptr)
{
    if (vptr)
    {
        if (vptr->timeout)
        {
            vptr->timeout();
        }
    }
}
inline void sports_mode_call_destructor(const sports_mode_vtbl_t *vptr)
{
    if (vptr)
    {
        if (vptr->destructor)
        {
            vptr->destructor();
        }
    }
}

const sports_mode_vtbl_t* sports_mode_get_vptr(sports_mode_mode_t mode);

#endif //!<__SPORTS_MODE_VTBL_H__
